const express = require('express')
const router = express.Router();
const mySql = require('../../config/db')
// md5加密
const crypto = require('crypto')
// 处理时间搓的
const moment = require('moment')
// 创建管理员
router.post('/', (req, res) => {
  const { username, password, repassword, status } = req.body
  const reRes = {
    status: 200,
    message: "",
    data: null
  }
  // 判断用户名是否书写
  if (username) {
    if (username.length >= 2 && username.length <= 12) {
      // 判断密码
      if (password) {
        // 判断两次密码是否一致
        if (password === repassword) {
          // 判断管理员状态
          if (status) {
            // 判断该用户名是否已经注册
            const sqlSelect = "select * from admin where user_name = ?";
            mySql.query(sqlSelect, [username], (error, data) => {
              if (error) {
                reRes.message = '请求失败'
              } else {
                if (data.length === 0) {
                  // 当前时间戳
                  let time = Math.round((new Date().getTime()) / 1000);
                  // 密码加密
                  let md5 = crypto.createHash('md5');
                  const pwd = md5.update(password).digest('hex');
                  const sqlInsert = 'insert into admin(user_name,password,status,time) values(?,?,?,?)';
                  mySql.query(sqlInsert, [username, pwd, status, time], (err, data) => {
                    if (err) {
                      reRes.message = '新增失败';
                      reRes.data = null;
                      res.json(reRes)
                    } else {
                      // 判断是否执行成功
                      if (data.affectedRows === 1) {
                        reRes.message = '新增成功';
                        reRes.data = data;
                        res.json(reRes)
                      } else {
                        reRes.message = '新增失败';
                        reRes.data = null;
                        res.json(reRes)
                      }
                    }
                  })

                } else {
                  reRes.message = '该账户名已经注册，请重新输入'
                  reRes.data = null;
                  res.json(reRes)
                }
              }
            })
          } else {
            reRes.message = '管理员状态不能为空';
            reRes.data = null;
            res.json(reRes)
          }
        } else {
          reRes.message = '两次密码不一致'
          reRes.data = null;
          res.json(reRes)
        }

      } else {
        reRes.message = '密码不能为空'
        reRes.data = null;
        res.json(reRes)
      }
    } else {
      reRes.message = '用户名长度为2-12个字符'
      reRes.data = null;
      res.json(reRes)
    }
  } else {
    reRes.message = '用户名不能为空'
    reRes.data = null;
    res.json(reRes)
  }
})
// 获取管理员列表
router.get('/', (req, res) => {
  const reRes = {
    status: 200,
    message: "",
    data: null
  }
  const search = req.query.search ? req.query.search : '';
  const sqlList = 'select * from admin where user_name like ? order by id desc';
  mySql.query(sqlList, [`%${search}%`], (err, data) => {
    if (err) {
      reRes = {
        status: 200,
        message: "获取失败",
        data: null
      }
      res.json(reRes)
    } else {
      if (data.length > 0) {
        reRes.message = '获取成功';
        reRes.data = data;
        res.json(reRes);
      } else {
        reRes.message = '获取成功';
        reRes.data = [];
        res.json(reRes);
      }
    }
  })

})
// 更新管理员列表
router.put('/', (req, res) => {
  const { id, username, oldPassword, password, repassword, status } = req.body
  const reRes = {
    status: 200,
    message: "",
    data: null
  }
  // 判断用户名是否书写
  if (username) {
    if (username.length >= 2 && username.length <= 12) {
      // 判断管理员状态
      if (status) {
        // 判断密码
        let sqlUpdate = null;
        const time = Math.round((new Date().getTime()) / 1000);
        if (password) {
          if (password === repassword) {
            const newMd5 = crypto.createHash('md5');
            const newPwd = newMd5.update(password).digest('hex');
            sqlUpdate = `update admin set user_name = '${username}', password = '${newPwd}', status = ${status}, time = ${time} where id = ${id}`;
          } else {
            reRes.message = '密码输入有误'
            reRes.data = null;
            res.json(reRes);
            return;
          }
        } else {
          sqlUpdate = `update admin set user_name = '${username}', status = ${status}, time = ${time} where id = ${id}`;
        }
        mySql.query(sqlUpdate, (err, data) => {
          if (err) {
            // 修改失败
            reRes.message = '修改失败';
            reRes.data = null;
            res.json(reRes)
          } else {
            // 判断是否执行成功
            if (data.affectedRows === 1) {
              reRes.message = '修改成功';
              reRes.data = data;
              res.json(reRes)
            }
          }
        })

        // const sqlSelect = "select password from admin where id = ?";
        // mySql.query(sqlSelect, [id], (err, data) => {
        //   if (err) {
        //     reRes.message = '旧密码不正确';
        //     reRes.data = null;
        //     res.json(reRes)
        //   } else {
        //     if (data.length > 0) {
        //       const md5 = crypto.createHash('md5');
        //       const oldPwd = md5.update(oldPassword).digest('hex');
        //       if (data[0].password === oldPwd) {


        //       } else {
        //         reRes.message = '旧密码不正确';
        //         reRes.data = null;
        //         res.json(reRes)
        //       }
        //     }
        //   }
        // })
        // if (oldPassword) {
        //   // 判断该用户名旧密码是否正确


        // } else {
        //   reRes.message = '旧密码不能为空';
        //   reRes.data = null;
        //   res.json(reRes)
        // }

        // mySql.query(sqlSelect, [username], (error, data) => {
        //   if (error) {
        //     reRes.message = '请求失败'
        //   } else {
        //     if (data.length === 0) {
        //       // 当前时间戳
        //       let time = Math.round((new Date().getTime()) / 1000);
        //       // 密码加密
        //       let md5 = crypto.createHash('md5');
        //       const pwd = md5.update(password).digest('hex');
        //       const sqlInsert = 'insert into admin(user_name,password,status,time) values(?,?,?,?)';
        //       mySql.query(sqlInsert, [username, pwd, status, time], (err, data) => {
        //         if (err) {
        //           reRes.message = '新增失败';
        //           reRes.data = null;
        //           res.json(reRes)
        //         } else {
        //           // 判断是否执行成功
        //           if (data.affectedRows === 1) {
        //             reRes.message = '新增成功';
        //             reRes.data = data;
        //             res.json(reRes)
        //           }
        //         }
        //       })

        //     } else {
        //       reRes.message = '该账户名已经注册，请重新输入'
        //       reRes.data = null;
        //       res.json(reRes)
        //     }
        //   }
        // })
      } else {
        reRes.message = '管理员状态不能为空';
        reRes.data = null;
        res.json(reRes)
      }


    } else {
      reRes.message = '用户名长度为2-12个字符'
      reRes.data = null;
      res.json(reRes)
    }
  } else {
    reRes.message = '用户名不能为空'
    reRes.data = null;
    res.json(reRes)
  }
})
// 删除管理员列表
router.delete('/', (req, res) => {
  const reRes = {
    status: 200,
    message: "",
    data: null
  }
  const id = req.query.id;
  const sqlDelete = `delete from admin where id = ${id}`;
  mySql.query(sqlDelete, (err, data) => {
    if (err) {
      reRes.message = "删除失败"
      res.json(reRes);
    } else {
      // 判断是否执行成功 
      if (data.affectedRows == 1) {
        reRes.message = "删除成功"
        reRes.data = data;
        res.json(reRes);
      } else {
        reRes.message = "删除失败"
        res.json(reRes);
      }
    }
  })

})


module.exports = router;